#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author Jmz

class Mymeta(type):
    def __init__(self,class_name,class_bases,class_dict):
        if not class_name.istitle:
            raise TypeError("类的首字母必须大写")
        if not class_dict.get("__doc__"):
            raise TypeError("类的创建需写入注释说明")

        super(Mymeta,self).__init__(class_name,class_bases,class_dict)

    def __call__(self, *args, **kwargs):   # __call__  是由类调用的，所以self 就是类本身
        # 1、 产生一个空对象
        # 2、 将参数传入类的__init___方法中

        obj = object.__new__(self)   # 产生一个空对象,, __new__ 是object 的静态方法
        self.__init__(obj,*args,**kwargs)  # 调用类的__init__ 方法，self 就是类

        return obj



class Student(object,metaclass=Mymeta):
    '''
    这是学生类
    '''
    __school = "上海交大"
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def get_school(self):
        return self.__school


jmz = Student("jmz",24)
print(jmz.__dict__)
print(jmz.get_school())
# {'name': 'jmz', 'age': 24}
# 上海交大




